import java.util.ArrayList;
import java.util.LinkedList;

class task1 {
    public static void main(String[] args) {

        long time1, time2;
        int j = 0;
        String s1, s2, s3, s4, s5;
        ArrayList<String> arrayList = new ArrayList<String>();
        LinkedList<String> linkedList = new LinkedList<String>();
        arrayList.add(0, "123");
        linkedList.add(0, "321");

        // Сам разогрев. Результаты пусть будут, но не смотрим на них.

        for (long i = 0; i > 100000; i++)
        {
            s1 = String.valueOf(Math.random());
            s2 = String.valueOf(Math.random());
            s3 = String.valueOf(Math.random());
            s4 = String.valueOf(Math.random());
            s5 = String.valueOf(Math.random());
            arrayList.add(0, s1);
            arrayList.add(0, s2);
            arrayList.add(0, s3);
            arrayList.add(0, s4);
            arrayList.add(0, s5);
            linkedList.add(0, s1);
            linkedList.add(0, s2);
            linkedList.add(0, s3);
            linkedList.add(0, s4);
            linkedList.add(0, s5);

        }

        arrayList.clear();
        linkedList.clear();

        for (int i = 0; i < 100; i++) {
            arrayBenchmark(arrayList, linkedList);
            arrayList.clear();
            linkedList.clear();
        }
    }

    private static void arrayBenchmark(ArrayList<String> arrayList, LinkedList<String> linkedList) {
        String s1;
        String s2;
        String s3;
        String s4;
        String s5;
        long time1;
        long time2;
        int j = 0;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {

            s1 = String.valueOf(Math.random());
            s2 = String.valueOf(Math.random());
            s3 = String.valueOf(Math.random());
            s4 = String.valueOf(Math.random());
            s5 = String.valueOf(Math.random());

            time1 = System.nanoTime();
            arrayList.add(0, s1);
            arrayList.add(0, s2);
            arrayList.add(0, s3);
            arrayList.add(0, s4);
            arrayList.add(0, s5);
            time1 -= System.nanoTime();

            time2 = System.nanoTime();
            linkedList.add(0, s1);
            linkedList.add(0, s2);
            linkedList.add(0, s3);
            linkedList.add(0, s4);
            linkedList.add(0, s5);
            time2 -= System.nanoTime();

            time1 /= 5;
            time2 /= 5;

            if (time1 < time2) { // так как отрицательные
                j++;
            } else {
                j = 0;
            }
            if (j>100) {       // 100 раз подряд должна сохранятся моннотонность
                System.out.println(time1);
                System.out.println(time2);
                System.out.println(i*5-j);
                return;
            }
        }
    }
}